classSolution(object): defreverseStr(self, s, k): """ :type s: str :type k: int :rtype: str """ s = list(s) size = len(s)
# 反转子字符串 defreverse_substring(data): left = 0 right = len(data) - 1 while left < right: data[left], data[right] = data[right], data[left] left += 1 right -= 1 return data
# 2 * k 是步长, s[x : x + k] 是对 2 * k 的一半进行操作 for x in range(0, size, 2 * k): s[x : x + k] = reverse_substring(s[x : x + k])
funcreverseStr(s string, k int)string { ss := []byte(s) size := len(s)
for x := 0; x < size; x += 2 * k { // python 和 go 的切片区别在于 python 如果切片超过范围,那么剩余多少个元素就取多少个 // go 则不一样,假如切片需要取 4 个, 但是最后只有 3 个, 那么 go 会扩容, 最后取到的结果为 3 个元素加一个 nul。python 则就是 3 个元素 if x +k < size{ reverseSubstring(ss[x: x+k]) }else{ reverseSubstring(ss[x: size]) } } returnstring(ss) }
funcreverseSubstring(data []byte){ left := 0 right := len(data) -1 for left < right{ data[left], data[right] = data[right], data[left] left +=1 right -=1 } }